package com.softline.documentsmall.service;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.softline.documentsmall.entity.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public interface DictionaryService {

    /**
     * @param type：en cn ar fr de it jp kr pt ru es
     * @return
     */
    List<IndexInitVo> indexInitByLanguageType(String type);

    IsProfessionalTermVo isProfessional(String value);

    JSONObject search(String type, String value, Integer pageNo, Integer pageSize);

    /**
     * 点赞排行榜列表页查询
     *
     * @param pageNo
     * @param pageSize
     * @param type
     * @return
     */
    List<DicVO> listByThumbsUpRanking(Integer pageNo, Integer pageSize, String type);

    /**
     * 查询词条记录数
     *
     * @return
     */
    Long selectCount();

    /**
     * 术语多语种音频对象返回
     *
     * @return
     */
    DictionaryDetailVo initDictionaryDetail(Integer id, String type ,String userId);

    /**
     * 根据输入查询内容 查询相关术语
     *
     * @param value
     * @return
     */
    List<HashMap<String,Object>> selectDictionaryByValue(String value);

    /**
     * 根据术语和语种查询语音
     *
     * @param id 术语
     * @param type 语种
     * @return
     * @author wph
     */
    Dictionary selectAudioByName(Integer id, String type);

    /**
     * 根据术语和语种查询11种语言名称
     *
     * @param
     * @param type 语种
     * @return
     * @author wph
     */
    Dictionary selectAllName(String name, String type);

    /**
     * 根据术语和语种查询术语定义、参考来源
     *
     * @param name 术语
     * @param type 语种
     * @return
     * @author wph
     */
    List<EntryDetails> selectDefinitionAndSource(String name, String type);

    /**
     * 根据术语和语种查询知识图谱
     *
     * @param name 术语
     * @param type 语种
     * @param id
     * @return
     * @author wph
     */
    JSONObject selectNewKnowledge(String type, String name, Integer id);

    /**
     * 延伸阅读
     * 根据术语名称查询对应图书和论文
     * @param name 术语名字
     * @author wph
     */
    JSONObject selectBookArtical(String name);

    List<Map<String, Object>> selectList(Integer id,String title,Integer pageNo, Integer pageSize);

    JSONObject selectById(int id);

    int insert(Dictionary dictionary);

    int update(Dictionary dictionary);

    /**
     * 根据条件查询总数
     * @param id
     * @param title
     * @return
     */
    Long selectLocalCount(Integer id, String title);

    /**
     * 根据类型查询评价排行总数
     * @return
     */
    Long selectThumbsUpCount(String type);

}
